home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PsL Monthly 1993 December
/
PSL Monthly Shareware CD-ROM (December 1993).iso
/
prgmming
/
dos
/
c
/
cmprss.exe
/
DECPRESS.CLS
< prev
next >
Wrap
Text File
|
1993-01-26
|
2KB
|
69 lines
#ifndef DECOMPRESS_CLS
#define DECOMPRESS_CLS
#include <fstream.h>
#include "const.h"
#include "type.h"
class cpifstream : public ifstream
{
public:
cpifstream(void);
cpifstream(char *fn);
~cpifstream();
cpifstream& operator>> (char& c) {getbuf(&c,sizeof(char)); return *this;};
cpifstream& operator>> (short& s) {getbuf(&s,sizeof(short)); return *this;};
cpifstream& operator>> (int& i) {getbuf(&i,sizeof(int)); return *this;};
cpifstream& operator>> (long& l) {getbuf(&l,sizeof(long)); return *this;};
cpifstream& operator>> (float& f) {getbuf(&f,sizeof(float)); return *this;};
cpifstream& operator>> (double& d) {getbuf(&d,sizeof(double)); return *this;};
cpifstream& operator>> (long double& ld) {getbuf(&ld,sizeof(long double)); return *this;};
cpifstream& read(signed char* s, int n) {getbuf(s,n); return *this;};
cpifstream& read(unsigned char* s, int n) {getbuf(s,n); return *this;};
cpifstream& operator>> (char *s);
int get(void);
int peek(void);
int gcount(void) {int c=count; count=0; return c;};
cpifstream& get(signed char* s, int len, char c='\n') {getbuf2(s,len,c); return *this;};
cpifstream& get(unsigned char* s, int len, char c='\n') {getbuf2(s,len,c); return *this;};
cpifstream& get(signed char& c) {c=get(); return *this;};
cpifstream& get(unsigned char& c) {c=get(); return *this;};
cpifstream& getline(signed char* s, int len, char c='\n') {getbuf2(s,len,c,1); return *this;};
cpifstream& getline(unsigned char* s, int len, char c='\n') {getbuf2(s,len,c,1); return *this;};
cpifstream& ignore(int n=1, int delim=EOF);
void open(char *fn);
int done(void) {return all_done;};
filebuf* close(void);
// The following functions are defined so that they are NO OP's:
cpifstream& putback(char) {return *this;};
cpifstream& seekg(long) {return *this;};
cpifstream& seekg(long, seek_dir) {return *this;};
// ---
private:
void init(void);
void clear(void);
void decode(void);
void getbuf(void* v, int l);
void getbuf2(char* s, int l, char delim, char ed=0);
int decompress(uchar *inbuff, uint inbuff_len, uchar *outbuff);
uchar *inbuf; // input buffer
uchar *outbuf; // output buffer after compression
int idx; // output buffer index
int o_len; // output buffer length
int all_done;
int count;
};
#endif